package service

import (
	"errors"
)

var (
	GmUsernameExist   = errors.New("account username already exist")
	GmPasswordError   = errors.New("account password error")
	GmAccountNotExist = errors.New("account not exist")
	UserNotExist      = errors.New("user not exist")
)

// // CheckGmAccountToken 检查token是否有效
// func (s *Service) CheckGmAccountToken(token string) (uint32, error) {
// 	accountToken, err := s.d.QueryGmAccountToken(token)
// 	if err != nil {
// 		logger.Error("get account token from db error: %v", err)
// 		return 0, err
// 	}
// 	return accountToken.Uid, nil
// }

// // RegGmAccount 注册一个账号
// func (s *Service) RegGmAccount(username string, password string) error {
// 	_, err := s.d.QueryGmAccountByUsername(username)
// 	if !errors.Is(err, gorm.ErrRecordNotFound) {
// 		return GmUsernameExist
// 	}
// 	uid, err := s.d.InsertGmAccount(&model.DbGmAccount{
// 		Uid:      0,
// 		Username: username,
// 		Password: endec.Md5Str(password),
// 	})
// 	if err != nil {
// 		return err
// 	}
// 	logger.Debug("account reg ok, uid: %v", uid)
// 	return nil
// }

// // GmAccountLogin 账号登录
// func (s *Service) GmAccountLogin(username string, password string) (uint32, string, error) {
// 	account, err := s.d.QueryGmAccountByUsername(username)
// 	if err != nil {
// 		logger.Error("query account error: %v, username: %v", err, username)
// 		return 0, "", GmAccountNotExist
// 	}
// 	if endec.Md5Str(password) != account.Password {
// 		return 0, "", GmPasswordError
// 	}
// 	token := strings.ToLower(random.GetRandomStr(32))
// 	err = s.d.InsertGmAccountToken(account.Uid, token)
// 	if err != nil {
// 		logger.Error("insert account token to db error: %v", err)
// 		return 0, "", err
// 	}
// 	logger.Debug("account login ok, uid: %v", account.Uid)
// 	return account.Uid, token, nil
// }

// // GetGmAccountInfo 获取账号信息
// func (s *Service) GetGmAccountInfo(uid uint32) (*model.GmAccountInfo, error) {
// 	account, err := s.d.QueryGmAccountByUid(uid)
// 	if err != nil {
// 		logger.Error("query account error: %v, uid: %v", err, uid)
// 		return nil, GmAccountNotExist
// 	}
// 	return &model.GmAccountInfo{
// 		Nickname: account.Nickname,
// 	}, nil
// }

// // UpdateGmAccountInfo 修改账号信息
// func (s *Service) UpdateGmAccountInfo(uid uint32, accountInfo *model.GmAccountInfo) error {
// 	err := s.d.UpdateGmAccount(&model.DbGmAccount{
// 		Uid:      uid,
// 		Nickname: accountInfo.Nickname,
// 	})
// 	if err != nil {
// 		logger.Error("update account error: %v, uid: %v", err, uid)
// 		return err
// 	}
// 	return nil
// }

// // ChangeGmAccountPassword 修改账号密码
// func (s *Service) ChangeGmAccountPassword(uid uint32, oldPassword string, newPassword string) error {
// 	account, err := s.d.QueryGmAccountByUid(uid)
// 	if err != nil {
// 		logger.Error("query account error: %v, uid: %v", err, uid)
// 		return GmAccountNotExist
// 	}
// 	if endec.Md5Str(oldPassword) != account.Password {
// 		return GmPasswordError
// 	}
// 	account.Password = endec.Md5Str(newPassword)
// 	err = s.d.UpdateGmAccount(account)
// 	if err != nil {
// 		logger.Error("update account error: %v, uid: %v", err, uid)
// 		return err
// 	}
// 	return nil
// }

// // GmAccountLogout 账号退出登录
// func (s *Service) GmAccountLogout(uid uint32, token string) error {
// 	err := s.d.DeleteGmAccountToken(token)
// 	if err != nil {
// 		logger.Error("account logout error: %v, uid: %v", err, uid)
// 		return err
// 	}
// 	logger.Debug("account logout ok, uid: %v", uid)
// 	return nil
// }

// // ClearGmAccountToken 清理过期账号令牌
// func (s *Service) ClearGmAccountToken() {
// 	ticker := time.NewTicker(time.Minute)
// 	for {
// 		<-ticker.C
// 		accountTokenList, err := s.d.QueryAllGmAccountToken()
// 		if err != nil {
// 			logger.Error("query all account token from db error: %v", err)
// 			continue
// 		}
// 		now := uint32(time.Now().Unix())
// 		for _, accountToken := range accountTokenList {
// 			if now-accountToken.CreateTime < 3600 {
// 				continue
// 			}
// 			err := s.d.DeleteGmAccountToken(accountToken.Token)
// 			if err != nil {
// 				logger.Error("delete account token from db error: %v, token: %v", err, accountToken.Token)
// 				continue
// 			}
// 		}
// 	}
// }
